package com.expert.miniapp.dao;

import com.expert.miniapp.dto.ChatSessionDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * ChatSessionMapper - 会话数据访问接口
 *
 * @author System
 * @since 2025-10-21
 */
@Mapper
public interface ChatSessionMapper {

    /**
     * 插入新会话
     *
     * @param session 会话对象
     * @return 影响行数
     */
    int insert(ChatSession session);

    /**
     * 根据ID查询会话
     *
     * @param sessionId 会话ID
     * @return 会话对象
     */
    ChatSession selectById(@Param("sessionId") String sessionId);

    /**
     * 查询用户的所有会话（带消息数量统计）
     *
     * @param userId 用户ID
     * @return 会话DTO列表（按updated_at倒序）
     */
    List<ChatSessionDTO> findUserSessions(@Param("userId") String userId);

    /**
     * 更新会话标题
     *
     * @param sessionId 会话ID
     * @param title 新标题
     * @return 影响行数
     */
    int updateTitle(@Param("sessionId") String sessionId, @Param("title") String title);

    /**
     * 删除会话
     *
     * @param sessionId 会话ID
     * @return 影响行数
     */
    int deleteById(@Param("sessionId") String sessionId);

    /**
     * 全局搜索会话（根据消息内容）
     *
     * @param userId 用户ID
     * @param keyword 搜索关键词
     * @return 匹配的会话列表
     */
    List<ChatSessionDTO> searchSessions(@Param("userId") String userId, @Param("keyword") String keyword);
}
